微博热搜榜前20信息数据爬取进行数据分析与可视化

您所在的位置:网站首页 新浪微博 热搜榜 微博热搜榜前20信息数据爬取进行数据分析与可视化

微博热搜榜前20信息数据爬取进行数据分析与可视化

2024-06-02 09:33:22| 来源: 网络整理| 查看: 265

一、设计方案1.主题式网络爬虫名称:微博热搜榜前20信息数据爬取进行数据分析与可视化2.爬取内容与数据特征分析:爬取微博热搜榜前20热搜事件、排名与热度,数据呈一定规律排序。3.设计方案概述:思路:首先打开目标网站,运用开发工具查看源代码,寻找数据标签,通过写爬虫代码获取所要的数据,将数据保存为csv或者xlsx文件,读取文件对数据进行数据清洗处理、可视化等操作。                            难点:网站数据的实时更新,信息容易变动;重点在于寻找数据标签;对数据整理、可视化等代码的掌握程度较低,需要观看以往视频或者上网搜索,进度慢。二、主题页面的结构特征分析1.主题页面的结构与特征:通过分析页面得知所要获取的数据分布于a标签中,td为热度标签。2.Htmls页面解析

3.节点(标签)查找方法与遍历方法:通过re模块的findall方法进行查找。三、程序设计1.数据爬取与采集

import re import requests import pandas as pd #爬取网站 url = 'https://tophub.today/n/KqndgxeLl9' #伪装爬虫 headers = {'user-Agent':""} #抓取网页信息 response=requests.get(url,headers=headers,timeout=30) response = requests.get(url,headers = headers) #爬取内容 html = response.text titles = re.findall('.*?(.*?)',html)[4:24] heat = re.findall('(.*?)',html)[:20] x = {'标题':titles,'热度':heat} y = pd.DataFrame(x) #创建空列表 data=[] for i in range(20): #拷贝数据 data.append([i+1,titles[i],heat[i][:]]) #建立文件 file=pd.DataFrame(data,columns=['排名','热搜事件','热度(万)']) print(file) #保存文件 file.to_excel('D:\\bbc\\微博热搜榜.xlsx')

2.对数据进行清洗和处理

#读取文件 df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx')) df.head()

#缺失值处理 df.isnull().head() #True为缺失值,False为存在值

#空值处理# df.isnull().sum() #0表示无空值

#查找重复值 df.duplicated() #显示表示已经删除重复值

#查看统计信息 df.describe()

3.文本分析:无法安装wordcloud库4.数据分析与可视化

#绘制条形图 df = pd.read_excel('微博热搜榜.xlsx') x = df['排名'] y = df['热度(万)'] plt.xlabel('排名') plt.ylabel('热度(万)') plt.bar(x,y) plt.title("微博热搜排名与热度条形图") plt.show()

#绘制折线图 df = pd.read_excel('微博热搜榜.xlsx') x = df['排名'] y = df['热度(万)'] plt.xlabel('排名') plt.ylabel('热度(万)') plt.plot(x,y,color="blue",label="折线") plt.title("微博热搜排名与热度折线图") plt.legend() plt.show()

#绘制散点图 df = pd.read_excel('微博热搜榜.xlsx') 排名 = (df['排名']) 热度 = (df['热度(万)']) plt.figure(figsize=(6,5)) plt.scatter(排名,热度,label=u"样本数据",linewidth=2) plt.title("微博热搜排名与热度散点图",color="green") plt.xlabel("排名") plt.ylabel("热度(万)") plt.legend() plt.grid() plt.show()

5.根据数据之间的关系,分析两个变量之间的相关系数,画出散点图,并建立变量之间的回归方程

#线性关系散点图 df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx')) sns.lmplot(x="排名",y= "热度(万)",data=df) #回归方程曲线图 df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx')) q = df['排名'] w = df['热度(万)'] def func(p,x): a,b,c=p return a*x*x+b*x+c def error_func(p,x,y): return func(p,x)-y p0=[0,0,0] Para=leastsq(error_func,p0,args=(q,w)) a,b,c=Para[0] plt.figure(figsize=(12,6)) plt.scatter(q,w,color="blue",label=u"热度散点",linewidth=2) x=np.linspace(0,20,15) y=a*x*x+b*x+c plt.plot(x,y,color="green",label=u"回归方程曲线",linewidth=2) plt.xlabel("排名") plt.ylabel("热度(万)") plt.title("微博热搜排名与热度回归曲线图") plt.legend() plt.show()

6.代码汇总

import re import requests import pandas as pd import seaborn as sns import numpy as np from numpy import genfromtxt import scipy as sp import matplotlib.pyplot as plt from scipy.optimize import leastsq plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文 plt.rcParams['axes.unicode_minus']=False#用来正常显示负号 #爬取网站 url = 'https://tophub.today/n/KqndgxeLl9' #伪装爬虫 headers = {'user-Agent':""} #抓取网页信息 response=requests.get(url,headers=headers,timeout=30) response = requests.get(url,headers = headers) #爬取内容 html = response.text titles = re.findall('.*?(.*?)',html)[4:24] heat = re.findall('(.*?)',html)[:20] x = {'标题':titles,'热度':heat} y = pd.DataFrame(x) #创建空列表 data=[] for i in range(20): #拷贝数据 data.append([i+1,titles[i],heat[i][:]]) #建立文件 file=pd.DataFrame(data,columns=['排名','热搜事件','热度(万)']) print(file) #保存文件 file.to_excel('D:\\bbc\\微博热搜榜.xlsx') #读取csv文件 df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx')) df.head() #缺失值处理 df.isnull().head() #True为缺失值,False为存在值 #空值处理# df.isnull().sum() #0表示无空值 #查找重复值 df.duplicated() #显示表示已经删除重复值 #查看统计信息 df.describe() #绘制条形图 df = pd.read_excel('微博热搜榜.xlsx') x = df['排名'] y = df['热度(万)'] plt.xlabel('排名') plt.ylabel('热度(万)') plt.bar(x,y) plt.title("微博热搜排名与热度条形图") plt.show() #绘制折线图 df = pd.read_excel('微博热搜榜.xlsx') x = df['排名'] y = df['热度(万)'] plt.xlabel('排名') plt.ylabel('热度(万)') plt.plot(x,y,color="blue",label="折线") plt.title("微博热搜排名与热度折线图") plt.legend() plt.show() #绘制散点图 df = pd.read_excel('微博热搜榜.xlsx') 排名 = (df['排名']) 热度 = (df['热度(万)']) plt.figure(figsize=(6,5)) plt.scatter(排名,热度,label=u"样本数据",linewidth=2) plt.title("微博热搜排名与热度散点图",color="green") plt.xlabel("排名") plt.ylabel("热度(万)") plt.legend() plt.grid() plt.show() #线性关系散点图 df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx')) sns.lmplot(x="排名",y= "热度(万)",data=df) #回归方程曲线图 df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx')) q = df['排名'] w = df['热度(万)'] def func(p,x): a,b,c=p return a*x*x+b*x+c def error_func(p,x,y): return func(p,x)-y p0=[0,0,0] Para=leastsq(error_func,p0,args=(q,w)) a,b,c=Para[0] plt.figure(figsize=(12,6)) plt.scatter(q,w,color="blue",label=u"热度散点",linewidth=2) x=np.linspace(0,20,15) y=a*x*x+b*x+c plt.plot(x,y,color="green",label=u"回归方程曲线",linewidth=2) plt.xlabel("排名") plt.ylabel("热度(万)") plt.title("微博热搜排名与热度回归曲线图") plt.legend() plt.show()

四、结论1.结论:对主题数据的分析与可视化,能将数据变的更加直观,更加容易观察出数据的规律、关系等。此次微博热榜的排名和热度是呈正比的,但其实事件内容才是吸引大众的关键因素。总之数据发分析与可视化直观的展示信息的分析结果与构思,令抽象的数据具体化,便于我们观察。2.任务小结:本次程序设计任务完成时间较久,也是在一步一步学习熟悉python的知识,通过本次任务提高了对代码的掌握程度,并且在完成任务的过程中提高了实践能力,也是为以后编写代码打下一点基础。

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭